
/* // 中间件
Express 是一个自身功能极简，完全是由路由和中间件构成一个的 web 开发框架:从本质上来说，一个 Express应用就是在调用各种中间件。
中间件(Middleware)是一个函数，它可以访问请求对象(request object(req)),响应对象(response object(res)),
和 web 应用中处于请求-响应循环流程中的中间件，一般被命名为 next 的变量。
中间件的功能包括:
·执行任何代码。
·修改请求和响应对象
.终结请求·响应循环。
.调用堆栈中的下一个中间件。

如果当前中间件没有终结请求-响应循环，则必须调用 next() 方法将控制权交给下一个中间件，否则请求就会挂起。
Express 应用可使用如下几种中间件:
.应用级中间件
.路由级中间件
.错误处理中间件。 
·内置中间件
.第三方中间件 


使用可选则挂载路径，可在应用级别或路由级别装载中间件。另外，你还可以同时装在一系列中间件函数，
从而在一个挂载点上创建一个子中间件栈。
(1)应用级中间件
应用级中间件绑定到 app 对象 使用 app.use()和 app.METHOD()，其中，METHOD 是需要处理的 HTTP 请求的方法，
例如 GET,PUT,POST等等，全部小写。例如:

有很多app接口，都要经过验证，那么可以写一个中间件，在所有接口调用之前，先调用这个中间件，进行验证。这个就是应用级中间件。
// 没有挂载路径的中间件，应用的每个请求都会执行该中间件
app.use(function (req, res, next) {
    console.log('Time:', Date.now());
    next();
})
// 也可以加上路径如：app.use("/home",func1)那就是访问/home的请求都会执行func1

（2）路由级中间件见index2.js
 (3)错误处理中间件
错误处理中间件函数定义方式同应用级和路由级中间件，唯一区别是在多出(4)个参数，用来捕获该中间件函数在执行期间发生的任何错误。
见index4.js


(4)内置中间件
Express 内置了以下中间件：
·express.static
·express.json
·express.urlencoded

express.static是 Express 唯一内置的中间件。它基于 serve-static，负责在 Express 应用中提托管静态资源。每个应用可有多个静态目录。
app.use(express.static('public'))
app.use(express.static('uploads')
app.use(express.static('files'))

(5)第三方中间件
安装所需功能的 node 模块，并在应用中加载，可以在应用级加载，也可以在路由级加载。
下面的例子安装并加载了一个解析 cookie的中间件:cookie-parser
$ npm install cookie-parser
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
加载用于解析 cookie 的中间件
app.use(cookieParser());
*/

const express = require('express');
const app = express();
const func1 = function(req, res, next) {
    // 验证逻辑,如验证token
    const isValid = true;
    if (isValid) {
        res.result="success";
        next();
    } else {
        res.sendStatus(400);
    }
    next();
}
// 这里加上app.use(func1)，下面的接口函数就可以简化了。
app.use(func1)

const func2 = function(req, res) {   
    console.log(res.result);
    res.send({list:[1,2,3]})
}

// app.get('/home',[func1,func2])
app.get('/home',[func2])

// app.get("/list",[func1],(req,res)=>{
//     res.send("list")
// })

app.get("/list",(req,res)=>{
    res.send("list")
})


app.listen(3000, () => {
    console.log('Server is running on http://localhost:3000');
})

